home *** CD-ROM | disk | FTP | other *** search
/ Sun Solutions 1997 April to September / Sun Solutions CD - APR '97 - SEP '97 (704-3778-12 Rev. H)(Sun Microsystems, Inc.)(1997).iso / products / bin / httpd / src / http_put.c < prev    next >
C/C++ Source or Header  |  1995-05-18  |  2KB  |  62 lines

  1. /*
  2.  * http_put.c: Handles PUT
  3.  * 
  4.  * All code contained herein is covered by the Copyright as distributed
  5.  * in the README file in the main directory of the distribution of 
  6.  * NCSA HTTPD.
  7.  *
  8.  * Based on NCSA HTTPd 1.3 by Rob McCool
  9.  * 
  10.  */
  11.  
  12. #include "httpd.h"
  13.  
  14. void handle_put(char *name, char *args, int in, FILE *out) {
  15.     struct stat finfo;
  16.     char ct_bak[MAX_STRING_LEN];
  17.  
  18.     strcpy(ct_bak,content_type); /* oop ack */
  19.     if(stat(name,&finfo) == -1) {
  20.         if(find_script("PUT",name,args,in,out))
  21.             return;
  22.         if(errno==ENOENT) {
  23.             log_reason("file does not exist",name);
  24.             unmunge_name(name);
  25.             die(NOT_FOUND,name,out);
  26.         }
  27.         else {
  28.             log_reason("file permissions deny server access",name);
  29.             unmunge_name(name);
  30.             die(FORBIDDEN,name,out);
  31.         }
  32.     }
  33.     probe_content_type(name);
  34.     if(!strcmp(content_type,CGI_MAGIC_TYPE)) {
  35.         strcpy(content_type,ct_bak);
  36.         send_cgi("PUT",name,"",args,&finfo,in,out);
  37.         return;
  38.     }
  39.     /* Not a script, do group ann thang */
  40.     die(NOT_IMPLEMENTED,"PUT to non-script",out);
  41. }
  42.  
  43.  
  44.  
  45. void put_node(char *name, char *args, int in, FILE *out) {
  46.     int s;
  47.  
  48.     s=translate_name(name,out);
  49.  
  50.     switch(s) {
  51.       case STD_DOCUMENT:
  52.         handle_put(name,args,in,out);
  53.         return;
  54.       case REDIRECT_URL:
  55.         die(REDIRECT,name,out);
  56.       case SCRIPT_CGI:
  57.         exec_cgi_script("PUT",name,args,in,out);
  58.       default:
  59.         die(NOT_IMPLEMENTED,"NCSA script exeuction of delete",out);
  60.     }
  61. }
  62.